﻿function gspan(cobj){//寻找下一个的span标签,可以通过这个对象给状态
	while(true){
		if(cobj.nextSibling.nodeName!="SPAN"){
			cobj=cobj.nextSibling;
		}
		else{
			return cobj.nextSibling;
		}
	}
}
/*
	通用的检测方法
	第一个参数，obj是用来检查的对象
	第二个参数，info是用来检查的提示信息
	第三个参数，fun是一个回调函数来检查值
	第四个函数，click只是一个状态，分清楚是否是单击提交，还是失去焦点
*/
function check(obj,info,fun,click){//info是提示信息
	var sp=gspan(obj);
		obj.onfocus=function(){
			sp.innerHTML=info;
			sp.className="stats2";
		}
		obj.onblur=function(){
			if(fun(this.value)){
				sp.innerHTML="输入正确";
				sp.className="stats4";
			}else{
				sp.innerHTML=info;
				sp.className="stats3";
			}
		}
		
		if(click=="click")
		{
			obj.onblur();
		}
}

onload=regs    //后面加括号就是调用，不加是整个方法    页面加载完自动调用

function regs(click){
	var stat=true;
		var name=document.getElementsByName("name")[0];
		var major=document.getElementsByName("major")[0];
		var grade=document.getElementsByName("grade")[0];
		var qq=document.getElementsByName("qq")[0];
		var phone=document.getElementsByName("phone")[0];
		var email=document.getElementsByName("email")[0];
		
		check(name,"输入姓名",function(val){//回调函数
			if(val.match(/^\S+$/) && val.length >0 && val.length <=20 ){
				return true;
			}else{
				stat=false;
				return false;} 
		},click);
		
		check(grade,"请输入年级 ex:2015级",function(val){//回调函数
			if(val.match(/^\S+$/) && val.length >0 && val.length <=20 ){
				return true;
			}else{
				stat=false;
				return false;} 
		},click);
		
		check(qq,"请输入正确的qq号码",function(val){//回调函数
			if(val.length >5 && val.length <=20 ){
				return true;
			}else{
				return false;} 
		},click);
		
		check(major,"请输入专业",function(val){//回调函数
			if(val.length >1 && val.length <=10 ){
				return true;
			}else{
				stat=false;
				return false;} 
		},click);
		
		check(phone,"请输入正确的手机号码",function(val){//回调函数
			if(val.length ==11){
				return true;
			}else{
				stat=false;
				return false;} 
		},click);
		
		check(email,"要按邮箱规则输入",function(val){
			if(val.match(/\w+@\w+\.\w/)){
				return true;
			}else{
				stat=false;
				return false;} 
		},click);  
		
		return stat;
		
}